/* Using a Map as an Associative Array */
#include <map>
#include <string>
#include <iostream>
#include <iomanip>

using namespace std;

int map2()
{
	// create map/associative array
	typedef map<string, float> StringFloatMap;

	// create empty container
	StringFloatMap stocks;

	// insert some elements
	stocks["BASF"] = 369.50;
	stocks["VW"] = 413.50;
	stocks["Daimler"] = 819.00;
	stocks["BWM"] = 834.00;
	stocks["Siemens"] = 842.20;

	// print all elements
	StringFloatMap::iterator pos;
	cout << left;		// left-adjust values
	for (pos = stocks.begin(); pos != stocks.end(); ++pos)
	{
		cout << "stock: " << setw(12) << pos->first << "price: " << pos->second << endl;
	}
	cout << endl;

	// boom(all prices doubled)
	for (pos = stocks.begin(); pos != stocks.end(); ++pos)
	{
		pos->second *= 2;
	}

	// print all elements
	for (pos = stocks.begin(); pos != stocks.end(); ++pos)
	{
		cout << "stock: " << setw(12) << pos->first << "price: " << pos->second << endl;
	}
	cout << endl;

	// rename key from "VW" to "Volkswagen"
	stocks["Volkswagen"] = stocks["VW"];
	stocks.erase("VW");

	// print all elements
	for (pos = stocks.begin(); pos != stocks.end(); ++pos)
	{
		cout << "stock: " << setw(12) << pos->first << "price: " << pos->second << endl;
	}

	return 0;
}